home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / gfx / opal / Book.lha / Book.oprx next >
Text File  |  1992-11-13  |  4KB  |  268 lines

  1. /*       Draw a book with shadow using OpalPaint -by Carmen Rizzolo     */
  2. /*                             11/13/92                                 */
  3.  
  4. address 'OpalPaint_Rexx'
  5.  
  6. options Results
  7.  
  8. AskBool 'Do you want to draw a book?'
  9. If Result=0 Then EXIT
  10.  
  11. SaveSetUp
  12.  
  13. Okay 'Pick a colour from your palette to define cover then draw the rectangle.'
  14.  
  15. GetRect
  16. parse var Result X1  Y1  X2  Y2
  17.  
  18. /* Check if book is too small */
  19. Width = X2 - X1
  20. Heigth = Y2 - Y1
  21. If Width > Heigth Then Do
  22.     A = Width - 5
  23.     End
  24. Else Do
  25.     A = Heigth - 5
  26.     End
  27.  
  28. ShadowBool = 1
  29. If A < 0 Then Do
  30.     Okay 'Book too small for shadows'
  31.     ShadowBool = 0
  32.     End
  33.  
  34. GetPen
  35. Parse var Result R G B
  36. Shadow = 0
  37. If ShadowBool = 1 Then Do
  38.     AskInt 0 500 'Enter Shadow distance ( RETURN = no shadow)'
  39.     Shadow = Result
  40.  
  41.     If Shadow = "" Then Shadow = 0
  42.     SX1 = X1 + Shadow
  43.     SY1 = Y1 + Shadow
  44.     SX2 = X2 + Shadow
  45.     SY2 = Y2 + Shadow
  46.     End
  47.  
  48. /* Initialize */
  49.  
  50. FillMode SOLID
  51. SetDrawMode 1
  52. SmoothPaper
  53. ClearColGrad
  54. ClearTransGrad
  55. ColourDither 0
  56. TransDither 0
  57. Trans 0
  58. ActiveNozzle 1
  59.  
  60. /* Draw dropshadow */
  61.  
  62. If Shadow > 0 Then Do
  63.     Done = 0
  64.     Trans 1
  65.     SetPen 0 0 0
  66.     If SX1 > X2 Then Do
  67.         SolidRect SX1 SY1 SX2 SY2
  68.         Done = 1
  69.         End
  70.     If SY1 > Y2 & Done = 0 Then Do
  71.         SolidRect SX1 SY1 SX2 SY2
  72.         Done = 1
  73.         End
  74.     If Done = 0 Then Do
  75.         SolidRect (X2 + 1) SY1 SX2 SY2
  76.         SolidRect SX1 (Y2 + 1) X2 SY2
  77.         End
  78.     Trans 0
  79.     End
  80.  
  81. /* Draw Cover */
  82. SetPen R G B
  83. SolidRect X1 Y1 X2 Y2
  84.  
  85. /* Draw Highlights */
  86.  
  87. R1 = R
  88. G1 = G
  89. B1 = B
  90.  
  91. If R1 < 255 Then Do
  92.     A = (255 - R1) / 4
  93.     A = Trunc(A)
  94.     R1 = R1 + A
  95.     End
  96. If G1 < 255 Then Do
  97.     A = (255 - G1) / 4
  98.     A = Trunc(A)
  99.     G1 = G1 + A
  100.     End
  101. If B1 < 255 Then Do
  102.     A = (255 - B1) / 4
  103.     A = Trunc(A)
  104.     B1 = B1 + A
  105.     End
  106.  
  107. SetPen R1 G1 B1
  108. Line (X1 + 1) (Y1 + 1) (X2 - 2) (Y1 + 1)
  109. Line (X1 + 1) (Y1 + 1) (X1 + 1) (Y2 - 2)
  110.  
  111. R2 = R1
  112. G2 = G1
  113. B2 = B1
  114.  
  115. If R2 < 255 Then Do
  116.     A = (255 - R2) / 3
  117.     A = Trunc(A)
  118.     R2 = R2 + A
  119.     End
  120. If G2 < 255 Then Do
  121.     A = (255 - G2) / 3
  122.     A = Trunc(A)
  123.     G2 = G2 + A
  124.     End
  125. If B2 < 255 Then Do
  126.     A = (255 - B2) / 3
  127.     A = Trunc(A)
  128.     B2 = B2 + A
  129.     End
  130.  
  131. SetPen R2 G2 B2
  132. Line X1 Y1 (X2 - 1) Y1
  133. Line X1 Y1 X1 (Y2 - 1)
  134. SetPen 255 255 255
  135. Line X1 Y1 X1 Y1
  136.  
  137. /* Draw Shading */
  138.  
  139. R3 = R
  140. G3 = G
  141. B3 = B
  142.  
  143. If R3 > 1 Then Do
  144.     A = R3 / 4
  145.     A = Trunc(A)
  146.     R3 = R3 - A
  147.     End
  148. If G3 > 1 Then Do
  149.     A = G3 / 4
  150.     A = Trunc(A)
  151.     G3 = G3 - A
  152.     End
  153. If B3 > 1 Then Do
  154.     A = B3 / 4
  155.     A = Trunc(A)
  156.     B3 = B3 - A
  157.     End
  158.  
  159. SetPen R3 G3 B3
  160. Line (X2 - 1) (Y1 + 2) (X2 - 1) (Y2 - 2)
  161. Line (X2 - 1) (Y2 - 1) (X1 + 2) (Y2 - 1)
  162.  
  163. R4 = R3
  164. G4 = G3
  165. B4 = B3
  166.  
  167. If R4 >1 Then Do
  168.     A = R4 / 3
  169.     A = Trunc(A)
  170.     R4 = R4 - A
  171.     End
  172. If G4 > 1 Then Do
  173.     A = G4 / 3
  174.     A = Trunc(A)
  175.     G4 = G4 - A
  176.     End
  177. If B4 > 1 Then Do
  178.     A = B4 / 3
  179.     A = Trunc(A)
  180.     B4 = B4 - A
  181.     End
  182.  
  183. SetPen R4 G4 B4
  184. Line X2 (Y1 + 1) X2 Y2
  185. Line X2 Y2 (X1 + 1) Y2
  186. SetPen 0 0 0
  187. Line X2 Y2 X2 Y2
  188.  
  189. /* Make Highlight Center Binder */
  190.  
  191. Center = (X2 - X1)
  192. Center = Center / 2
  193. Center = Trunc(Center)
  194. A = Center / 10
  195. A = Trunc(A)
  196. Center = Center + X1
  197.  
  198. A = A + Center
  199. A2 = A + 1
  200. SetPen R2 G2 B2
  201. Line A Y1 A (Y2 - 1)
  202. SetPen R1 G1 B1
  203. Line A2 (Y1 + 1) A2 (Y2 - 2)
  204. SetPen R G B
  205. Line A Y2 A2 (Y2 - 1)
  206. SetPen 255 255 255
  207. Line A Y1 A Y1
  208.  
  209. /* Make Shadow Center Binder */
  210.  
  211. Center = (X2 - X1)
  212. Center = Center / 2
  213. Center = Trunc(Center)
  214. C = Center / 10
  215. C = Trunc(C)
  216. Center = Center + X1
  217.  
  218. C = Center - C
  219. C2 = C - 1
  220.  
  221. SetPen R4 G4 B4
  222. Line C (Y1 + 1) C Y2
  223. SetPen R3 G3 B3
  224. Line C2 (Y1 + 2) C2 (Y2 - 1)
  225. SetPen R G B
  226. Line C Y1 C2 (Y1 + 1)
  227. SetPen 0 0 0
  228. Line C Y2 C Y2
  229.  
  230. /* Draw Paper Area */
  231.  
  232. If Width > Height Then Inset = (Y2 - Y1)
  233. Else Inset = (X2 - X1)
  234. Inset = Inset / 50
  235. Inset = Trunc(Inset)
  236. SetPen 160 160 160
  237. SolidRect (X1 + Inset) (Y1 + Inset) (X2 - Inset) (Y2 - Inset)
  238.  
  239. /* Draw Paper sides */
  240.  
  241. A = (X2 - Inset) - (X1 + Inset)
  242. A = A / 18
  243. A = Trunc(A)
  244.  
  245. SetPen 190 190 190
  246. SolidRect (X1 + Inset) (Y1 + Inset) (X1 + Inset + A) (Y2 - Inset)
  247.  
  248. SetPen 130 130 130
  249. SolidRect (X2 - Inset) (Y1 + Inset) ((X2 - Inset) - A) (Y2 - Inset)
  250.  
  251. /* Draw Paper Center */
  252.  
  253. FillMode GRADIENT
  254. GradType 1
  255. GradNum 1
  256. ColGradTag 0 160 160 160
  257. ColGradTag 1 100 100 100
  258. SolidRect (Center - (Inset * 3)) (Y1 + Inset) Center (Y2 - Inset)
  259. ClearColGrad
  260. ColGradTag 0 120 120 120
  261. ColGradTag 0.2 160 160 160
  262. ColGradTag 0.5 190 190 190
  263. ColGradTag 1 160 160 160
  264. SolidRect Center (Y2 - Inset) (Center + (Inset * 3)) (Y1 + Inset) 
  265. Okay 'Operation complete.'
  266. RestoreSetUp
  267.  
  268. EXIT